package com.ikas.ai.enums.redis;


/**
 * @author hubowei
 * @email hu.bowei@ikasinfo.com
 * @date 2023-11-6 19:25:23
 */
public enum RedisKeyEnum implements BaseRedisKeyEnum<String> {

    /**
     * t_data_mete缓存更新1.工况修改2.初始化
     */
    //未设置有效时间
    DATA_METE_UNIQUE_IDS("mete:data:unique:ids", "t_data_mete表meteid"),
    //未设置有效时间
    DATA_METE_TABLE_ENTITY("mete:data:table:entity", "t_data_mete表到list结构中"),
    //未设置有效时间
    ALL_DATA_METE("mete:data:machine:{}", "T_DATE_METE表中所有数据缓存到一个大json"),

    BASE_METE_ALL_TABLE_ENTITY("mete:base:all:table:entity", "缓存t_base_mete到list结构中"),
    //未设置有效时间
    BASE_METE_UNIQUE_YX_IDS("mete:base:unique:yx:ids", "缓存t_base_mete到mete_type为遥信meteid"),
    //未设置有效时间
    BASE_METE_UNIQUE_YC_IDS("mete:base:unique:yc:ids", "缓存t_base_mete到mete_type为遥测meteid"),
    //未设置有效时间
    BASE_METE_ENTITY_YX("mete:base:entity:yx:{}", "缓存t_base_mete到mete_type为遥信meteid"),
    //未设置有效时间
    BASE_METE_ENTITY_YC("mete:base:entity:yc:{}", "缓存t_base_mete到mete_type为遥测meteid"),
    //未设置有效时间
    ALL_TRIP_METE_DATA("mete:trip:table:entity", "t_base_trip_mete到List结构中"),
    //未设置有效时间
    ALL_DATA_TRIP_METE("machine:trip:machine:{}", "t_base_trip_mete表中所有数据缓存"),
    //未设置有效时间
    //程序启动时候初始化
    START_WORKFLOW_STRING_KEY("machine:{}:machine-start:wfname:{}", "缓存每个机组下的每个工况的t_work_condition_flow表startMete字段"),
    //未设置有效时间
    WORKFLOW_STEP_KEY("machine:{}:step", "缓存每个机组中每个工况的步骤,流程创建完成后清除"),
    //未设置有效时间
    EARLY_CACHE_METE_KEY("machine:{}:early_cache", "缓存每个机组下earlycache为1的数据到一个json中,流程创建完成后清除"),
    //设置了有效时间
    START_WORKFLOW_OBJECT_KEY("machine:{}:machine_start", "缓存kafka收到启动项测点数据，流程创建完成后清除"),
    //设置了有效时间
    ALARM_STATE_KEY("alarm:state","驾驶舱轮询告警状态缓存"),
    //未设置有效时间
    ASSESS_MODEL_TRIGGER_KEY("assess:model:trigger:{}:{}:{}","测点触发评价模型的缓存对象"),
    //未设置有效时间
    STEADY_METE_CODE("steady:mete:codes", "缓存稳态测点编号"),
    STEADY_MONITOR_METE_CODE("steady:monitor:mete:code:{}", "缓存稳态监测测点编号"),

    ;
    private final String key;
    private final String desc;

    RedisKeyEnum(String suffixCode, String value) {
        this.key = suffixCode;
        this.desc = value;
    }

    @Override
    public String desc() {
        return desc;
    }

    /**
     * 返回redis-key
     *
     * @return
     */
    @Override
    public String key() {
        return key;
    }

    @Override
    public String key(Object... argArray) {
        return RedisKeyUtil.generateKey(key, argArray);
    }

}
